@param *args: more arguments
@type *args: tuple
"""
- xendom = XendDomain.instance()
- fn = getattr(xendom, fn_name)
- xendom.do_legacy_api_with_uuid(fn, vm_ref, *args, **kwargs)
- return xen_api_success_void()
+ try:
+ xendom = XendDomain.instance()
+ fn = getattr(xendom, fn_name)
+ xendom.do_legacy_api_with_uuid(fn, vm_ref, *args, **kwargs)
+ return xen_api_success_void()
+ except VMBadState, exn:
+ return xen_api_error(['VM_BAD_POWER_STATE', vm_ref, exn.expected,
+ exn.actual])
class XendAPI:
from xen.xend.PrettyPrint import prettyprint
from xen.xend.XendConfig import XendConfig
from xen.xend.XendError import XendError, XendInvalidDomain, VmError
+from xen.xend.XendError import VMBadState
from xen.xend.XendLogging import log
from xen.xend.XendAPIConstants import XEN_API_VM_POWER_STATE
from xen.xend.XendConstants import XS_VMROOT
raise XendError("Cannot save privileged domain %s" % domname)
if dominfo.state != DOM_STATE_RUNNING:
- raise XendError("Cannot suspend domain that is not running.")
+ raise VMBadState("Domain is not running",
+ POWER_STATE_NAMES[DOM_STATE_RUNNING],
+ POWER_STATE_NAMES[dominfo.state])
dom_uuid = dominfo.get_uuid()
raise XendInvalidDomain(str(domid))
if dominfo.state != DOM_STATE_HALTED:
- raise XendError("Domain is already running")
+ raise VMBadState("Domain is already running",
+ POWER_STATE_NAMES[DOM_STATE_HALTED],
+ POWER_STATE_NAMES[dominfo.state])
dominfo.start(is_managed = True)
self._add_domain(dominfo)
raise XendInvalidDomain(str(domid))
if dominfo.state != DOM_STATE_HALTED:
- raise XendError("Domain is still running")
+ raise VMBadState("Domain is still running",
+ POWER_STATE_NAMES[DOM_STATE_HALTED],
+ POWER_STATE_NAMES[dominfo.state])
log.info("Domain %s (%s) deleted." %
(dominfo.getName(), dominfo.info.get('uuid')))
def __str__(self):
return self.value
+class VMBadState(XendError):
+
+ def __init__(self, value, expected, actual):
+ XendError.__init__(self, value)
+ self.expected = expected
+ self.actual = actual
+
+ def __str__(self):
+ return self.value
+
class VmError(XendError):
"""Vm construction error."""
pass
msgid ""
msgstr ""
"Project-Id-Version: Xen-xm 3.0\n"
-"PO-Revision-Date: 2006-12-23 11:04+0000\n"
+"PO-Revision-Date: 2006-12-25 19:24+0000\n"
"Last-Translator: Ewan Mellor <ewan@xensource.com>\n"
"Language-Team: xen-devel <xen-devel@lists.xensource.com>\n"
"MIME-Version: 1.0\n"
msgid "VTPM_HANDLE_INVALID"
msgstr "The VTPM handle %(1)s is invalid."
+msgid "VM_BAD_POWER_STATE"
+msgstr "The VM must be %(2)s to perform the requested operation (it is currently %(3)s)."